home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / t_os / komei4 / komei4.exe / ICON / CONTEN2.HD6 < prev    next >
Text File  |  1993-06-03  |  10KB  |  799 lines

  1. ds_name        db    'MOJ\CONTEN',0
  2.  
  3. ; マウスにより色の成分を変える
  4. ; 青赤緑の色を細い箱を出しているモジュール
  5.  
  6.  
  7.  
  8. paint_wd:
  9.  
  10.      call pal_syo           ;letset     
  11.      
  12. re_paint:
  13.  
  14.      WD_CLS 0
  15.  
  16.      BOX boxdt,4
  17.  
  18.      BOX boxdt1,4
  19.  
  20.     call nowcol
  21.     mov bx,[edi]
  22.     call cgcol
  23.  
  24.  
  25.      MOZI mozidt
  26.      ret
  27.  
  28.  
  29. ds_pal0:
  30.     call sub_esi
  31.  
  32.     db 3*20 dup(0)
  33.  
  34. ds_pal1:
  35.     call sub_esi
  36.  
  37.     db 3*20 dup(0)
  38.  
  39.  
  40. pal_syo:
  41.  
  42.     cld
  43.  
  44.     mov    dx,0448h    ; video output controler I/O address
  45.     mov    al,01b        ; select priority register
  46.     out    dx,al
  47.  
  48. ;R 448 al=1
  49. ; プライオリティレジスタ
  50.  
  51.     mov    dx,044Ah    ; video output controler I/O data
  52.     mov    al,00001001b    ; layer 0 pallet use
  53.     out    dx,al        ; forground layer 1
  54.  
  55. ;--------
  56.     
  57.     ;画面0 のパレットセット
  58.  
  59.     call ds_pal0
  60.     mov edi,esi
  61.  
  62.     push ds
  63.     pop es
  64.  
  65.     mov    ecx,16
  66.     
  67.  
  68. init12:
  69.     mov al,16
  70.     sub al,cl
  71.  
  72.     call    getpal        ; set pallet
  73.  
  74.  
  75.     loop    init12
  76.  
  77. ;-------------------
  78. init15:
  79.  
  80. ;    mov    dx,0448h    ; video output controler I/O address
  81. ;    mov    al,01b        ; select priority register
  82. ;    out    dx,al
  83.  
  84. ;    mov    dx,044Ah    ; video output controler I/O data
  85. ;    mov    al,00101001b    ; layer 1 pallet, forground layer 1
  86. ;    out    dx,al
  87.  
  88.  
  89.     mov    dx,0448h    ; video output controler I/O address
  90.     mov    al,01b        ; select priority register
  91.     out    dx,al
  92.  
  93.     mov    dx,044Ah    ; video output controler I/O data
  94.     mov    al,00101000b    ; layer 1 pallet, forground layer 0
  95.     out    dx,al
  96.  
  97.  
  98.  
  99.     
  100. ;----------
  101.  
  102.     ; 画面1のパレットセット
  103.     
  104.  
  105.     call ds_pal1        ;mov    esi,offset paldat1
  106.     mov edi,esi
  107.     
  108.     mov    ecx,16            ;paldat1N
  109.  
  110. init14:
  111.  
  112.     mov al,16
  113.     sub al,cl
  114.  
  115.     call    getpal        ; set pallet
  116.  
  117.  
  118.     loop    init14
  119.  
  120.     ret
  121.  
  122.  
  123.  
  124.  
  125.  
  126. bye_bye:
  127.  
  128.      mov bx,0
  129.      mov ah,24
  130.      mov al,2
  131.      
  132.      call komei
  133.  
  134.      BOOK
  135.      mov ecx,40[esi]
  136.      call palet1
  137.      mov esi,ecx
  138.      xchg edi,esi
  139.      mov ecx,8*16+4
  140.      cld
  141.      rep movsb
  142.      mov bx,1
  143.      mov ah,24
  144.      mov al,2
  145.      call komei
  146.  
  147.      WD_ERZ 0
  148.      WD_LEFT 
  149.      ret
  150.  
  151. be_called:
  152.  
  153.      BOOK
  154.      mov ax,300[esi]
  155.      mov bx,302[esi]
  156.      cmp ax,102
  157.      je cccc
  158.  
  159.     cmp    ax,1
  160.     je    note_chg
  161.  
  162.      cmp ax,5
  163.      je cgcol
  164.  
  165.      cmp ax,6
  166.      je bye_bye
  167.  
  168.     cmp    ax,20
  169.     je    newld
  170.  
  171.     cmp    ax,400
  172.     je    neru
  173.     cmp    ax,500
  174.     je    okiru
  175.  
  176.      mov eax,0
  177.      mov 300[esi],eax
  178.      ret
  179.  
  180. neru:
  181.     WD_ERZ 1
  182.     WD_ERZ 0
  183.     WD_LEFT
  184.     ret
  185. okiru:
  186.     WD_WANT
  187.     jmp    re_paint
  188.  
  189.  
  190. cccc:
  191.      call nowcol
  192.      mov dx,[edi]
  193.      mov ah,7
  194.      mov al,0
  195.      call zzz
  196.  
  197.      mov ah,7
  198.      mov al,2
  199.      call zzz
  200.      ret
  201.  
  202. ;******************************************
  203.  
  204. note_chg:
  205.  
  206.     call    init15
  207.     call    nowcol
  208.     mov    bx,[edi]
  209.  
  210.  
  211. cgcol:
  212.  
  213.      call nowcol
  214.      mov [edi],bx
  215.  
  216.      call boxdt
  217.      mov [edi+36],bx
  218.  
  219.  
  220.      call ds_pal1    ;palet1 data
  221.  
  222.      movzx ebx,bx
  223.      mov eax,3
  224.      mul ebx
  225.  
  226.      add esi,eax
  227.  
  228.  
  229.      movzx ax,byte ptr [esi]
  230.      movzx bx,byte ptr [esi+1]
  231.      movzx cx,byte ptr [esi+2]
  232.  
  233.      shr ax,2
  234.      shr bx,2
  235.      shr cx,2
  236.  
  237.      call ln2
  238.      mov 2[edi],ax
  239.  
  240.      call ln4
  241.      mov 2[edi],bx
  242.  
  243.      call ln6
  244.      mov 2[edi],cx
  245.  
  246.     call    look_me
  247.     mov    ax,[esi+8]
  248.     cmp    ax,1
  249.     jne    neteruyo
  250.  
  251.  
  252.      call find1_1
  253.  
  254.      call find2_1
  255.  
  256.      call find3_1
  257.  
  258.  
  259.     call boxdt
  260.     add edi,20
  261.     mov ecx,1
  262.     call putbox
  263.  
  264. neteruyo:
  265.  
  266.      ret
  267.  
  268.          
  269.  
  270.  
  271. mouse_in:
  272.       cmp ch,1
  273.      je mouseck
  274.       ret
  275.  
  276. mouseck:
  277.      MOU boxdt,4
  278.      cmp bx,1                  ;bx=1 find
  279.      je short mck1             ;ax = no
  280.      ret
  281. mck1:
  282.  
  283.     cmp ax,1
  284.      je find1
  285.     cmp ax,2
  286.      je find2
  287.     cmp ax,3
  288.      je find3
  289.  
  290.  
  291.      ret
  292.  
  293.  
  294. gokei:
  295.  
  296.      mov ebx,2
  297.      call hex2y
  298.  
  299.      BOX boxdt1,3
  300.  
  301.      MOZI mozidt
  302.      ret
  303. ;*********************************
  304. find1:
  305.      mov ah,3
  306.      call MOUSE
  307.  
  308.      call look_me
  309.      mov bx,16[esi]
  310.      sub dx,bx
  311.      sub dx,2
  312.  
  313.      call ln2
  314.      mov 2[edi],dx
  315.  
  316.      call find1_1
  317.  
  318.  
  319.      call nowcol
  320.      movzx ebx,word ptr [edi]
  321.  
  322.      call ds_pal1
  323.      mov eax,3
  324.      mul ebx
  325.  
  326.     add esi,eax       ;blu head
  327.  
  328.  
  329.      call ln2
  330.  
  331.      mov ax,2[edi]
  332.      shl ax,2
  333.      mov [esi],al
  334.  
  335.      call nowcol
  336.      mov bx,[edi]
  337.      call l_set
  338.      ret
  339.  
  340. ;**************************************
  341. find2:
  342.      mov ah,3
  343.      call MOUSE
  344.      call look_me
  345.      mov bx,16[esi]
  346.      sub dx,bx
  347.      sub dx,2
  348.  
  349.      call ln4
  350.      mov 2[edi],dx
  351.      call find2_1
  352.  
  353.  
  354.  
  355.      call nowcol
  356.      movzx ebx,word ptr [edi]
  357.  
  358.      call ds_pal1
  359.      mov eax,3
  360.      mul ebx
  361.  
  362.     add esi,eax       ;blu head
  363.  
  364.  
  365.      call ln4
  366.      mov ax,2[edi]
  367.      shl ax,2    
  368.      mov [esi+1],al
  369.  
  370.      call nowcol
  371.      mov bx,[edi]
  372.      call l_set
  373.      ret
  374.  
  375. ;*********************************
  376. find3:
  377.      mov ah,3
  378.      call MOUSE
  379.      call look_me
  380.      mov bx,16[esi]
  381.      sub dx,bx
  382.      sub dx,2
  383.  
  384.      call ln6
  385.  
  386.      mov 2[edi],dx
  387.      call find3_1
  388.  
  389.  
  390.      call nowcol
  391.      movzx ebx,word ptr [edi]
  392.  
  393.      call ds_pal1
  394.      mov eax,3
  395.      mul ebx
  396.  
  397.     add esi,eax       ;blu head
  398.  
  399.  
  400.      call ln6
  401.      mov ax,2[edi]
  402.      shl ax,2    
  403.      mov [esi+2],al
  404.  
  405.      call nowcol
  406.      mov bx,[edi]
  407.      call l_set
  408.      ret
  409.  
  410. gam1_pal:
  411.  
  412.     mov    dx,0448h    ; video output controler I/O address
  413.     mov    al,01b        ; select priority register
  414.     out    dx,al
  415.  
  416.     mov    dx,044Ah    ; video output controler I/O data
  417.     mov    al,00101000b    ; layer 1 pallet, forground layer 0
  418.     out    dx,al
  419. ret
  420.  
  421. letset:
  422.      
  423.      mov ah,5
  424.      mov al,1
  425.      call zzz
  426.      call palet1
  427.      mov esi,edi
  428.      mov ah,4
  429.      mov al,1
  430.      jmp zzz     
  431.  
  432.  
  433. hennano:
  434.          mov ecx,16
  435. mekun1:
  436.      mov ax,[edx]
  437.      add edx,2
  438.      mov [esi],al
  439.      add esi,8     
  440.      loop mekun1
  441.      ret
  442.  
  443.  
  444. newld:
  445.      mov esi,302[esi]
  446.  
  447.      mov eax,[esi]
  448.      cmp eax,16
  449.      je newld1
  450.  
  451.  
  452.      sub esi,100
  453.      mov edx,esi
  454.      mov edi,esi
  455.  
  456.      mov al,4eh[esi]
  457.      cmp al,3
  458.  
  459.      je gra_01
  460.  
  461.      ret
  462.  
  463. gra_01:
  464.  
  465.      add edx,100h
  466.  
  467.      add esi,100
  468.      mov eax,16
  469.  
  470.      mov [esi],eax
  471.      add esi,8
  472.          push esi
  473.      inc esi
  474.  
  475. damekun:
  476.      call hennano
  477.  
  478.      mov esi,[esp]
  479.      add esi,2
  480.  
  481.      call hennano
  482.  
  483.      mov esi,[esp]
  484.  
  485.  
  486.      call hennano
  487.  
  488.      mov esi,[esp]
  489.      add esi,3
  490.  
  491.      call hennano
  492.  
  493.  
  494.      pop esi
  495.      sub esi,4
  496.  
  497.      mov ebx,0
  498.      mov ecx,16
  499. mekun2:
  500.      mov [esi],ebx
  501.      inc ebx
  502.      add esi,8
  503.      loop mekun2
  504.  
  505.  
  506.  
  507.      mov esi,edi
  508.      add esi,100
  509.  
  510.  
  511. newld1:
  512.      call palet1
  513.      mov ecx,132
  514.      cld
  515.      rep movsb
  516.      call letset
  517.      ret
  518.  
  519.  
  520.  
  521. l_set:
  522.     call gam1_pal    
  523.     mov ax,bx
  524.     call setpal0
  525.     ret
  526.  
  527.  
  528. ;*******************************
  529. ; setpal : set pallet data
  530. ;
  531. ; in : (ds:esi) = data address
  532. ; use: dx
  533. ;
  534.  
  535. setpal0:
  536.  
  537.     mov    dx,0FD90h    ; pallet code
  538.     out    dx,al
  539.  
  540.     mov    dx,0FD92h    ; blue pallet data
  541.     outsb
  542.     mov    dx,0FD94h    ; red pallet data
  543.     outsb
  544.     mov    dx,0FD96h    ; green pallet data
  545.     outsb
  546.  
  547.     ret
  548.  
  549. ;**************************************
  550.  
  551.  
  552. zzz:                        ;EGB CALL
  553.     M_ZZZ
  554.  
  555.  
  556. find1_1:
  557.  
  558.     BOX ln1,1
  559.     BOX ln2,1
  560.  
  561.  
  562.      call ln2
  563.      mov ax,2[edi]
  564.  
  565.      shr ax,2
  566.  
  567.      call mozidt
  568.      add edi,14
  569.      jmp gokei
  570.  
  571.  
  572.  
  573.     
  574. find2_1:
  575.  
  576.     BOX ln3,1
  577.     BOX ln4,1
  578.  
  579.  
  580.  
  581.      call ln4
  582.      mov ax,2[edi]
  583.      shr ax,2
  584.  
  585.      call mozidt
  586.      add edi,17
  587.      jmp gokei
  588.  
  589.  
  590.  
  591. find3_1:
  592.  
  593.     BOX ln5,1
  594.     BOX ln6,1
  595.  
  596.      call ln6
  597.      mov ax,2[edi]
  598.      shr ax,2
  599.  
  600.      call mozidt
  601.      add edi,20
  602.      jmp gokei
  603.  
  604.  
  605. ;  
  606. ;  in    ebx    ketasu
  607. ;        ax    suuzi
  608. ;        esi   buffer
  609. ;  use   dx    
  610. ;        cx
  611.  
  612. hex2y:
  613.      mov cx,10
  614. hex2y1:
  615.      mov dx,0
  616.      div cx
  617.      add dl,30h
  618.      mov [edi+ebx-1],dl
  619.      dec ebx
  620.      jnz hex2y
  621.      ret
  622.  
  623. nowcol:
  624.      call sub_edi
  625.      dw     14
  626.  
  627.  
  628. palet0:
  629.      call sub_edi
  630.          dd     16
  631.          dd     0
  632.          db     0,0,0,0        ;青 赤 緑 and 0
  633.          dd    1
  634.          db    128,0,0,0
  635.          dd    2
  636.          db    0,128,0,0
  637.          dd    3
  638.          db    128,128,0,0
  639.          dd    4
  640.          db    0,0,128,0
  641.          dd    5
  642.          db    128,0,128,0
  643.           dd    6
  644.          db    0,128,128,0
  645.           dd    7
  646.          db    128,128,128,0
  647.           dd    8
  648.          db    64,64,64,0
  649.          dd    9
  650.          db    255,0,0,0
  651.          dd    10
  652.          db    0,255,0,0
  653.           dd    11
  654.          db    255,255,0,0
  655.          dd    12
  656.          db    0,0,255,0
  657.          dd    13
  658.          db    255,0,255,0
  659.          dd    14
  660.          db    0,255,255,0
  661.          dd    15
  662.          db    255,255,255,0
  663. palet1:
  664.      call sub_edi
  665.          dd     16
  666.          dd     0
  667.          db     0,0,0,0        ;青 赤 緑 and 0
  668.          dd    1
  669.          db    128,0,0,0
  670.          dd    2
  671.          db    0,128,0,0
  672.          dd    3
  673.          db    128,128,0,0
  674.          dd    4
  675.          db    0,0,128,0
  676.          dd    5
  677.          db    128,0,128,0
  678.           dd    6
  679.          db    0,128,128,0
  680.           dd    7
  681.          db    128,128,128,0
  682.           dd    8
  683.          db    64,64,64,0
  684.          dd    9
  685.          db    255,0,0,0
  686.          dd    10
  687.          db    0,255,0,0
  688.           dd    11
  689.          db    255,255,0,0
  690.          dd    12
  691.          db    0,0,255,0
  692.          dd    13
  693.          db    255,0,255,0
  694.          dd    14
  695.          db    0,255,255,0
  696.          dd    15
  697.          db    255,255,255,0
  698.  
  699.  
  700. ;*******************************
  701. ; setpal : set pallet data
  702. ;
  703. ; in : (ds:esi) = data address
  704. ; use: dx
  705. ;
  706.  
  707. setpal1:
  708.     push    esi
  709.     mov    dx,0FD90h    ; pallet code
  710.     outsb
  711.     mov    dx,0FD92h    ; blue pallet data
  712.     outsb
  713.     mov    dx,0FD94h    ; red pallet data
  714.     outsb
  715.     mov    dx,0FD96h    ; green pallet data
  716.     outsb
  717.     pop    esi
  718.     ret
  719.  
  720. ;**************************************
  721.  
  722. getpal:
  723.  
  724.  
  725.     mov    dx,0FD90h    ; pallet code
  726.  
  727.     out dx,al
  728.  
  729. ;    outsb
  730.  
  731.     mov    dx,0FD92h    ; blue pallet data
  732.     insb
  733.  
  734.     mov    dx,0FD94h    ; red pallet data
  735.     insb
  736.  
  737.     mov    dx,0FD96h    ; green pallet data
  738.     insb
  739.  
  740.  
  741.     ret
  742.  
  743. look_me:
  744.      call sub_esi
  745.      dd 0,0
  746.      dw     1,0,164,66,640-165,256+62+15,15,0,0,0
  747.  
  748.  
  749.  
  750. boxdt:
  751.     call sub_edi
  752.         dw    3,64,10,2,2,0,22,15,0,0
  753.         dw    1,20,20,80,2,0,22,15,14,1
  754.         
  755. boxdt1:
  756.     call sub_edi
  757.         dw    3,26,20,120,2,0,22,15,0,0
  758.         dw    1,20,20,80,2,0,22,15,0,0
  759.  
  760. ln1:
  761.      call sub_edi
  762.         dw    1,63,10,2,2,0,22,15,0,0
  763. ln2:
  764.      call sub_edi
  765.         dw    1,63,10,2,2,0,22,15,2,0
  766.  
  767. ln3:
  768.      call sub_edi
  769.         dw    1,63,10,2,24,0,22,15,0,0
  770. ln4:
  771.      call sub_edi
  772.         dw    1,63,10,2,24,0,22,15,2,0
  773.  
  774.  
  775. ln5:
  776.      call sub_edi
  777.         dw    1,63,10,2,46,0,22,15,0,0
  778. ln6:
  779.      call sub_edi
  780.         dw    1,63,10,2,46,0,22,15,2,0
  781.  
  782.  
  783. ; [count][sz_x][sz_y][off_x][off_y][+x][+y][f_col][b_col][s_no]
  784.  
  785. mozidt:
  786.     call sub_edi
  787.            dw    0        ;screen_no
  788.            dw    15      ; mozi_color
  789.            dw    124      ; 書き出し位置  x
  790.            dw    0      ;          y
  791.            dw    0      ; next offset x
  792.            dw    22      ; next offset y
  793.                dw   3      ; gyo suu
  794.                    db    '00',0   ;[14]
  795.                    db    '00',0   ;[17]
  796.                    db    '00',0   ;[20]
  797.                 dw 0,0
  798.  
  799.